const mongoose = require('mongoose')
const mongoosePaginate = require('mongoose-paginate')
const path = require('path')

module.exports = function (db) {
    return db.model(path.basename(__filename, path.extname(__filename)), new mongoose.Schema(
        {
            // 用户唯一号 short id
            id: {
                type: String,
                unique: true,
                required: true,
                index: true,
            },

            // 账号 默认和手机号相同
            account: {
                type: String,
                unique: true,
                required: true,
                index: true,
            },

            // 密码 (默认密码 为 123456)
            password: {
                type: String,
                required: true,
                index: true,
            },

            // 头像
            avatar: {
                type: String,
                default: '',
            },

            // 昵称
            nickname: {
                type: String,
                index: true,
            },

            // 邮箱
            email: {
                type: String,
            },

            // 手机号
            mobile: {
                type: String,
                index: true,
            },

            // 性别 0=未知，1=男，2=女
            gender: {
                type: Number,
            },

            // 备注
            remark: {
                type: String,
                default: '',
            },

            // 上级用户-由谁创建
            creator_id: {
                type: String,
                index: true,
            },

            // 用户类型 0=上帝模式, 1=普通管理员
            user_type: {
                type: Number,
                default: 1,
                index: true,
            },

            // 用户菜单权限
            rights: {
                type: [String],
                default: [],
            },

            // 是否启用 1=启用，2=禁用
            is_enable: {
                type: Number,
                default: 1,
            },

            // 是否删除 1=未删除，2=已删除
            is_delete: {
                type: Number,
                default: 1,
            },

            //最近一次登录时间
            last_login_time: {
                type: Date,
                index: true,
                default: Date.now
            },

            //创建时间
            create_at: {
                type: Date,
                index: true,
                default: Date.now
            },

            update_at: {
                type: Date,
                default: Date.now
            },
        },
        {
            collection: path.basename(__filename, path.extname(__filename)),
            timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }
        }).plugin(mongoosePaginate)
    )
}
